Real-time updates to item recommendation models based on matrix factorization

ABSTRACT

A network-based enterprise or other system that makes items available for selection to users may implement real-time updates to item recommendation models based on matrix factorization. An item recommendation model may be maintained that is generated from a singular value decomposition of a matrix indicating selections of items by users. A user-specific update to the item recommendation model may be calculated in real-time for a particular user such that the calculation may be performed without performing another singular value decomposition to generate an updated version of the item recommendation model. Item recommendations may then be made based on the user-specific update and the item recommendation model. In various embodiments, the item recommendations may be made in response to an indication or request for item recommendations for the particular user.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/288,216, filed May 27, 2014, now U.S. Pat. No. 9,691,035, whichclaims benefit of priority to U.S. Provisional Application Ser. No.61/979,380, entitled “Real-Time Updates to Item Recommendation ModelsBased on Matrix Factorization,” filed Apr. 14, 2014, and which isincorporated herein by reference in its entirety.

BACKGROUND

Consumer choices for goods and services have grown exponentially uponthe advent of the digital age. E-commerce, content distributionnetworks, and other communication technologies have enabled customers tochoose from many more goods than were previously available to them.However, navigating the sheer number products now available can provedaunting and ultimately discourage some customers from making purchasesusing these new means. Recommendation systems have been developed inorder to provide customers with some assistance when choosing newproducts, especially if these products are not physically available tothe customer at the moment when a purchase, selection, or orderingdecision is made. A recommendation system may provide feedback orrecommended items to a customer so that the customer may make a moreinformed decision as to whether or not an item may be a good purchase.

In order to create effective item recommendation systems, large amountsof past behavior of customers may be tracked and maintained. Thiscustomer data may be analyzed in order to make suggestions of itemsthat, for example, other similar customers have purchased. As the amountof data used in generating item recommendations continues to growhowever, these recommendation systems may become less agile. Recentpurchases, views, or other selections may not be accounted for as manyitem recommendation techniques evaluate large sets of data in accordancewith processes that take significant amounts of time.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a real-time item recommendationengine implementing real-time updates to an item recommendation modelbased on matrix factorization, according to some embodiments.

FIG. 2A is a block diagram illustrating an item recommendation modelbased on matrix factorization, according to some embodiments.

FIG. 2B is a scatter plot diagram comparing common item recommendationsbetween a real-time update for an item recommendation model for usersand an item recommendation model that is not updated in real-time forthe same users, according to some embodiments.

FIG. 2C is a scatter plot diagram comparing user parameter vectordifferences between a real-time update for an item recommendation modelfor users and an item recommendation model that is not updated inreal-time for the same users, according to some embodiments.

FIG. 3A is a block diagram illustrating a network-based enterpriseimplementing real-time updates to an item recommendation model based onmatrix factorization, according to some embodiments.

FIG. 3B is a block diagram illustrating a customer device implementingreal-time updates to an item recommendation model based on matrixfactorization, according to some embodiments.

FIG. 4 is a sequence diagram illustrating determining itemrecommendations for a particular user based on a real-time update to anitem recommendation model in response to an item recommendation requestfor the particular user, according to some embodiments.

FIG. 5 is a high-level flowchart illustrating methods and techniques forimplementing real-time updates to an item recommendation model based onmatrix factorization, according to some embodiments.

FIG. 6 is a high-level flowchart illustrating methods and techniques forcalculating a user-specific update for an item recommendation model fora particular user, according to some embodiments.

FIG. 7 is high-level flowchart illustrating methods and techniques forcalculating a user-specific update for a particular user linked to otherusers, according to some embodiments.

FIG. 8 is a high-level flowchart illustrating methods and techniques forcomparing item recommendations among a particular user and other userslinked to the particular user, according to some embodiments.

FIG. 9 is a high-level flowchart illustrating methods and techniques fordetermining one or more item recommendations based on an itemrecommendation model generated from matrix factorization, according tosome embodiments.

FIG. 10 is an example computer system, according to various embodiments.

While embodiments are described herein by way of example for severalembodiments and illustrative drawings, those skilled in the art willrecognize that the embodiments are not limited to the embodiments ordrawings described. It should be understood, that the drawings anddetailed description thereto are not intended to limit embodiments tothe particular form disclosed, but on the contrary, the intention is tocover all modifications, equivalents and alternatives falling within thespirit and scope as defined by the appended claims. The headings usedherein are for organizational purposes only and are not meant to be usedto limit the scope of the description or the claims. As used throughoutthis application, the word “may” is used in a permissive sense (i.e.,meaning having the potential to), rather than the mandatory sense (i.e.,meaning must). The words “include,” “including,” and “includes” indicateopen-ended relationships and therefore mean including, but not limitedto. Similarly, the words “have,” “having,” and “has” also indicateopen-ended relationships, and thus mean having, but not limited to. Theterms “first,” “second,” “third,” and so forth as used herein are usedas labels for nouns that they precede, and do not imply any type ofordering (e.g., spatial, temporal, logical, etc.) unless such anordering is otherwise explicitly indicated.

Various components may be described as “configured to” perform a task ortasks. In such contexts, “configured to” is a broad recitation generallymeaning “having structure that” performs the task or tasks duringoperation. As such, the component can be configured to perform the taskeven when the component is not currently performing that task (e.g., acomputer system may be configured to perform operations even when theoperations are not currently being performed). In some contexts,“configured to” may be a broad recitation of structure generally meaning“having circuitry that” performs the task or tasks during operation. Assuch, the component can be configured to perform the task even when thecomponent is not currently on. In general, the circuitry that forms thestructure corresponding to “configured to” may include hardwarecircuits.

Various components may be described as performing a task or tasks, forconvenience in the description. Such descriptions should be interpretedas including the phrase “configured to.” Reciting a component that isconfigured to perform one or more tasks is expressly intended not toinvoke 35 U.S.C. §112, paragraph six, interpretation for that component.

“Based On.” As used herein, this term is used to describe one or morefactors that affect a determination. This term does not forecloseadditional factors that may affect a determination. That is, adetermination may be solely based on those factors or based, at least inpart, on those factors. Consider the phrase “determine A based on B.”While B may be a factor that affects the determination of A, such aphrase does not foreclose the determination of A from also being basedon C. In other instances, A may be determined based solely on B.

The scope of the present disclosure includes any feature or combinationof features disclosed herein (either explicitly or implicitly), or anygeneralization thereof, whether or not it mitigates any or all of theproblems addressed herein. Accordingly, new claims may be formulatedduring prosecution of this application (or an application claimingpriority thereto) to any such combination of features. In particular,with reference to the appended claims, features from dependent claimsmay be combined with those of the independent claims and features fromrespective independent claims may be combined in any appropriate mannerand not merely in the specific combinations enumerated in the appendedclaims.

DETAILED DESCRIPTION

Various embodiments of real-time updates to item recommendation modelsbased on matrix factorization are described herein. Item recommendationmodels typically contain large data sets describing the actions of manyusers with respect to various items. In order to efficiently analyze thelarge amounts of data collected and retained for the purpose ofgenerating item recommendation models matrix factorization techniquesmay be implemented. Singular value decomposition, for example, takesdata representing item selections by users in a single large matrix andgenerates corresponding matrices for the users and the items, which maythen be used to make item recommendations as the item recommendationmodel. However, techniques such as singular value decomposition areoften performed as a batch process, working upon all existing data foritems selections as of a current time. This technique may not beperformed efficiently for providing item recommendations for particularusers in real-time. Real-time updates to item recommendation models,however, may be implemented that provide item recommendations withsimilar results to performing an update of the entire itemrecommendation model.

FIG. 1 is a block diagram illustrating a real-time item recommendationengine implementing real-time updates to an item recommendation modelbased on matrix factorization, according to some embodiments. Real-timerecommendation engine 100 may be configured to provide itemrecommendations for particular users in real-time, without having togenerate an update to an entire item data model. In various embodiments,items may be any digital product or media, physical product, service, orother object physical or virtual for which a selection action may beperformed. Persistent data store 180 (e.g., persistent block-basedstorage devices such as hard disk drives or solid state drives) maystore item selection data 110 and an item recommendation model 130. Asselections of items are made by users, these selections 106 may bestored in item selection data 110. Periodically (or aperiodically) itemrecommendation model 130 may be generated from item selection data.Recommendation model generator 120 (which may be implemented as part ofreal-time item recommendation engine 100) may receive as input the itemselection data 110 up to a certain point in time. The data may beformatted as a single matrix indicating the selection of items byparticular users. Recommendation model generator may perform a singularvalue decomposition (as described in detail below with regard to FIG.2A) to generate the item recommendation model 130, which may beassociated with a particular point in time. This may result in a usermatrix storing user parameter vectors for users and an item matrixstoring item parameter vectors for items.

As user recommendation requests are received for particular users 102,user-specific recommendation update module 150 may be configured toobtain information about a particular user's item selections. Those itemselections that occurred after the particular point in time in which theitem recommendation model 130 was generated may be identified.User-specific recommendation update module 150 may also be configured toaccess the item recommendation model 130 to obtain a user parametervector for the particular user and item parameter vectors for thoseitems that were subsequently selected by the user. In some embodiments,other user parameter vectors and/or item parameter vectors selected byother users linked to the particular user may be selected and used fordetermining a user-specific update for the item recommendation model forthe particular user. The obtained parameter vectors may be combinedusing vector addition to generate an updated user parameter vector forthe particular user. Further detail is described below with regard toFIGS. 5-7. This user-specific update may then be made available tofactorization-based item recommendation module 160 to determine itemrecommendations for the particular user. For example, factorizationbased item recommendation module 160 may be configured to obtain otheritem parameter vectors from item recommendation model 130 in order tocalculate affinity scores for the particular user based on theuser-specific update (as described in more detail below with regard toFIG. 9).

In some embodiments, a recommendation filter module 170 may beconfigured to select particular items to recommend based on selectioncriteria. For example, filter module 170 may obtain past item selectionsfrom item selection data 110 for the particular user in order to preventpreviously selected items by the particular user from being recommendedto the particular user. User item recommendations may then be provided104 to the particular user, for example via a network-based interface.

Please note, FIG. 1 is provided as a logical illustration of real-timeupdates to item recommendation models based on matrix factorization, andare not intended to be limiting as to the physical arrangement, size, ornumber of components, modules, or devices, implementing a real-timerecommendation engine or data store. For example, in some embodiments,the item recommendation model 130 and item selection data 110 may bestored separately. In another example, the module for generating theitem recommendation module may be implemented separately from thereal-time item recommendation engine.

FIG. 2A is a block diagram illustrating an item recommendation modelbased on matrix factorization, according to some embodiments. Itemselection data 110 may maintain, in various embodiments, a single matrixdescribing user selections with regard to items, matrix A 202. This itemselection matrix may be represented as Aε[0,1]m×n where m is the numberof users and n is the number of items. A_(ij)=1 if user i selected itemj. Recommendation model generator 120 may be implement a component 210configured to perform a singular value decomposition on item selectiondata, matrix A 202 in order to generate the item recommendation model.For example, A=UΣV^(T) be the thin singular value decomposition (SVD) ofA where d is the latent dimensionality. The shapes of the matrices maybe U, Σ, V are UεR^(m×d), VεR^(n×d), and Σε

^(d×d) diagonal. The columns of U and V are orthogonal and have unitnorm. Therefore, Q=UΣ may be user matrix Q 222, whose i'th row may bethe parameter vector for the i'th user. The diagonal matrix scales thecolumns of U by the corresponding diagonal element Q_(ij)=U_(ij)Σ_(ij).Item matrix V 224 may be the matrix of video parameters whose j'th rowis the parameter vector for item j. Thus, an affinity estimate of a useris affinity for item j may be Σ_(k)q_(tk)V_(j).

From an SVD decomposition of the single matrix A, 202, and as V isorthogonal, it may be that Q=AV. Moreover, as A is a binary matrix, thei'th row of Q is the just sum of the rows V_(j) for which A_(ij)=1.

$Q_{j^{\prime}} = {{\sum\limits_{j = 1}^{d}{A_{ij}V_{j^{\prime}}}} = {\sum\limits_{{j^{\prime}{Aij}} = 1}V_{j^{\prime}}}}$

In other words, the parameter vector for a user is may be the sum of theparameter vectors for the items selected. Therefore, a user-specificupdate may be calculated for user selections up to time t, so thatQ_(t)+=V_(j), for all items selected since time t. In this way, the SVDcalculation to generate the item recommendation model may be updated fora specific user without having to perform SVD. This may allow for longerintervals between generating an updated item recommendation model 130.

While user-specific updates may not account for all changes thatgenerating an updated item recommendation model may include,user-specific updates may produce similar results. FIG. 2B is a scatterplot diagram comparing common item recommendations between a real-timeupdate for an item recommendation model for users and an itemrecommendation model that is not updated in real-time for the sameusers, according to some embodiments. Scatter chart 230 illustrates onthe x-axis an older version of the item recommendation model. The y-axisrepresents recommendations using user-specific updates and the olderitem recommendation model. 200 test recommendations were made to comparethe results of the two techniques with a “perfect” model that includesall item selections. Each point represents recommendations for aparticular user. For example, point 232 represents that the olderversion of the model had 0 recommendations in common with the “perfect”model, while the older version plus the user-specific updates hadapproximately 125 recommendations in common with the “perfect” model.

FIG. 2C is a scatter plot diagram comparing user parameter vectordifferences between a real-time update for an item recommendation modelfor users and an item recommendation model that is not updated inreal-time for the same users, according to some embodiments. Again,scatter chart 240 illustrates on the x-axis an older version of the itemrecommendation model. The y-axis represents recommendations usinguser-specific updates and the older item recommendation model. 200 testrecommendations were made to compare the results of the two techniqueswith a “perfect” model that includes all item selections. Each pointrepresents distance between the “perfect” model's user parameter vectorswith the parameter vector for a particular user using the older versionof the item recommendation model alone and the older item recommendationmodel including user-specific updates. Point 242 illustrates that theuser-specific update parameter has almost no distance from the “perfect”model (thus being very similar) than the older model without userupdates, showing a distance of near 0.7.

The systems described herein may, in some embodiments, implement anetwork-based enterprise that offers items to customers (which may beusers). The items may be used, purchased, rented, or otherwise consumed.Selection of an item may correspond to one of these actions and/orrating or reviewing a particular item. Some embodiments of anetwork-based enterprise system are illustrated in FIG. 3A. In theillustrated embodiment, a number of clients (shown as customers 350a-350 n) may be configured to interact with a network-based enterprise300 via a network 360. An enterprise interface (e.g., a network-basedsite, such as a website) 310 may handle or communicate with customers350. Enterprise business logic 320 may be configured to handleprocessing, management, and other techniques necessary to provide therequest items to customers 350. Enterprise data store 330 may maintaininformation for the network-based enterprise 300. Item fulfillment 340may be either the physical or digital resources (items) provided tocustomers 350 upon selection. It is noted that where one or moreinstances of a given component may exist, reference to that componentherein may be made in either the singular or the plural. However, usageof either form is not intended to preclude the other.

In various embodiments, the components illustrated in FIG. 3A may beimplemented directly within computer hardware, as instructions directlyor indirectly executable by computer hardware (e.g., a microprocessor orcomputer system), or using a combination of these techniques. Forexample, the components of FIG. 3A may be implemented by a system thatincludes a number of computing nodes (or simply, nodes), each of whichmay be similar to the computer system embodiment illustrated in FIG. 10and described below. In various embodiments, the functionality of agiven system component (e.g., real-time item recommendation engine 100)may be implemented by a particular node or may be distributed acrossseveral nodes. In some embodiments, a given node may implement thefunctionality of more than one system component (e.g., more thanenterprise business logic 320 component).

Generally speaking, customers 350 may encompass any type of client orother component configurable to submit network-based requests tonetwork-based enterprise 300 via network 360, including requests toselect particular items offered. For example, a given customer 350 mayinclude a suitable version of a web browser, or may include a plug-inmodule or other type of code module configured to execute as anextension to or within an execution environment provided by a webbrowser. For example, selection of physical products for purchase,submitting payment information and shipping information may be conveyedvia the web browser. Alternatively, a customer 350 (e.g., a gamingclient) may encompass an application such as a gaming application (oruser interface thereof), a media application, an office application orany other application that may make use of persistent storage resourcesto store and/or access digital items. In some embodiments, such anapplication may include sufficient protocol support (e.g., for asuitable version of Hypertext Transfer Protocol (HTTP)) for generatingand processing network-based requests without necessarily implementingfull browser support for all types of network-based data. That is,customer 350 may be an application configured to interact directly withnetwork-based enterprise 300 (or enterprise interface 310). In someembodiments, customer 350 may be configured to generate network-basedrequests according to a Representational State Transfer (REST)-stylenetwork-based architecture, a document- or message-based network-basedarchitecture, or another suitable network-based architecture.

Customers 350 may convey network-based requests (e.g., item selectionrequests) to and receive responses from network-based enterprise 300 vianetwork 360. In various embodiments, network 360 may encompass anysuitable combination of networking hardware and protocols necessary toestablish network-based-based communications between customer 350 andnetwork-based enterprise 300 (and/or enterprise interface 310). Forexample, network 360 may generally encompass the varioustelecommunications networks and service providers that collectivelyimplement the Internet. Network 360 may also include private networkssuch as local area networks (LANs) or wide area networks (WANs) as wellas public or private wireless networks. For example, both a givencustomer 350 and network-based enterprise 300 may be respectivelyprovisioned within enterprises having their own internal networks. Insuch an embodiment, network 360 may include the hardware (e.g., modems,routers, switches, load balancers, proxy servers, etc.) and software(e.g., protocol stacks, accounting software, firewall/security software,etc.) necessary to establish a networking link between given customer350 and the Internet as well as between the Internet and network-basedenterprise 300. It is noted that in some embodiments, customer 350 maycommunicate with network-based enterprise 300 using a private networkrather than the public Internet. For example, customer 350 may via aprivate network as part of selecting and receiving digital items offeredby network-based enterprise 300. In such a case, customers 350 maycommunicate with enterprise 300 entirely through a private network 360(e.g., a LAN or WAN that may use Internet-based communication protocolsbut which is not publicly accessible).

Generally speaking, network-based enterprise 300 may be configured toimplement enterprise interface 310 which may be configured to receiveand process network-based requests, such as requests to select, browse,access, or otherwise interact with items offered. For example,enterprise interface 310 may include hardware and/or software configuredto implement a network-based site, such that a web browser or othercomponent implemented on customer 350 may be configured to receiveinformation via the network-based site. For example, in someembodiments, real-time item recommendations 312 may be provided todifferent customers 350 (e.g., based on a user associated with thecustomer, such as by a user or customer identifier or account number)via the network-based site. Enterprise interface 310 may be implementedas a server system configured to receive network-based requests fromcustomers 350 and to forward them to components of a system, such asenterprise business logic 320, that facilitate the offering, sale,distribution or other functionalities of the items offered bynetwork-based enterprise 300. In other embodiments, enterprise interface310 may be configured as a number of distinct systems (e.g., in acluster topology) implementing load balancing and other requestmanagement features configured to dynamically manage large-scalenetwork-based request processing loads. In various embodiments,enterprise interface 310 may be configured to support REST-style ordocument-based (e.g., SOAP-based) types of network-based requests.

Enterprise business logic 320 may be configured to facilitate theoperations of network-based enterprise 300. For example, enterprisebusiness logic 320 may coordinate the purchase, rental, access, sharing,metering and/or accounting of client usage/selection of items, which maybe services, physical products, or digital media, in variousembodiments. In at least some embodiments, network-based enterprise 300may be a streaming video service. Enterprise business logic 320 mayimplement financial accounting and billing systems, or may maintain adatabase of usage data that may be queried and processed by externalsystems for reporting and billing of customer activity. In certainembodiments, enterprise business logic 320 may be configured to collect,monitor and/or aggregate a variety of operational metrics, such asmetrics reflecting the rates and types of requests received fromcustomers 350, bandwidth utilized by such requests, system processinglatency for such requests, system component utilization (e.g., networkbandwidth and/or storage utilization within the storage service system),rates and types of errors resulting from requests or any other suitablemetrics. In some embodiments such metrics may be used by systemadministrators to tune and maintain system components, while in otherembodiments such metrics (or relevant portions of such metrics) may beexposed to customers 350 to enable such customers to monitor their usageof services/items. Enterprise business logic may also implement varioususer and/or customer account functions which may be responsible forupdating or maintaining customer/user account information. Userinformation, such as a unique user identifier, may be linked to itemselection data 110 for customers/users maintained in enterprise datastore 330.

In some embodiments, enterprise business logic 320 may also implementuser authentication and access control procedures. For example, for agiven network-based request to access a particular item, enterprisebusiness logic 320 may be configured to ascertain whether the customer350 associated with the request is authorized to access the particularitem. Enterprise business logic 320 may determine such authorization by,for example, evaluating an identity, password or other credentialagainst credentials associated with the particular item, or evaluatingthe requested access to the particular item against an access controllist for the particular item. Various access control policies may bestored as records or lists of access control information by enterprisebusiness logic 320. In some embodiments, these access control policiesmay be implemented to accept or deny access to multiple items offered bynetwork-based enterprise 300 (e.g., some or all of streaming videos).

Enterprise data store 330 may be one or more storage nodes, systems, orservers configured to persistently store data for enterprise data store,such as the aforementioned user information, item selection data 110and/or item recommendation model 130. Various durability and/or securitytechniques may be implemented to ensure safe and reliable storage ofsensitive information, such as payment information, accounts, orpasswords.

Item fulfillment 340 may be one or more systems or devices configured toprovide selected items to customers 350 that are offered bynetwork-based enterprise 300. For example, item fulfillment 340 may be anetwork of one or more fulfillment centers that stock physical productsand process shipment orders of those products selected by customers 350.In some embodiments, item fulfillment 349 may be application servers,content distribution networks, application, gaming or other mediaplatforms that provide access to or a copy of digital media selected bycustomers 350. For example, movies, television shows, or otheraudio/visual media may be streamed or downloaded to customers 350 forconsumption as part of a network-based video streaming or gamingservice. If access to or rights to an item is limited, item fulfillment340 may be configured to enforce digital rights management (DRM) orother controls to enforce the policies of the items and their respectiveoffers (e.g., rental or borrow of digital media for certain timeperiods).

As illustrated in FIG. 3A, real-time recommendation engine 100 may beimplemented in enterprise business logic 320 in order to provide itemrecommendations for customers 350. For example, a particular customer350 may be communicating with the enterprise interface, perhaps making aselection of a particular item. Real-time product recommendation enginemay receive a request from another component of business logic 320 orenterprise interface 310 to provide real-time item recommendations forthe particular user that selected the particular item. Item selectiondata 110 may be accessed to identify subsequent item selections afterthe generation of item recommendation model 130. A user-specific updatefor the user may be calculated based on a user parameter vector obtainedfrom item recommendation model 130 as well as item parameter vectors forthe subsequently selected items. Item recommendations may then bedetermined, according to the various techniques described in FIGS. 5-8below, in order to provide the determined item recommendations 312 forthe particular user.

FIG. 3B is a block diagram illustrating a customer device implementingreal-time updates to an item recommendation model based on matrixfactorization, according to some embodiments. Instead of implementingreal-time item recommendation engine 100 as part of the network-basedenterprise 300 (as described above with regard to FIG. 3A), customerdevice 370 may implement real-time recommendation engine 100, in variousembodiments. Item recommendations may be made similar to the techniquesdescribed above. Local item recommendation model 372 may be arecommendation model that is received from network-based service 300,which may implement a model generator 322 to provide update versions ofthe item recommendation model including selections up to a particularpoint in time. Real-time recommendation engine 100 may provide real-timeitem recommendations accessing user parameter vectors and item vectorsmaintained in local item recommendation model 372. In at least someembodiments, real-time item recommendations engine 100 may access otheractions taken at customer device 370. For example, customer device 370may be a streaming media device that is configured to access or selectmedia offerings from multiple different network-based enterprises.Real-time item recommendations engine may be configured to track otherselections of items offered by these other network-based services andmap them to particular items offered by network-based enterprise 300.If, for instance, movie A is selected from another network-basedenterprise and watched at customer device 370, the real-time itemrecommendation engine 100 may be configured to map the selection ofmovie A to (either movie A offered via network-based enterprise 300 or asimilar movie) and include the corresponding item parameter vector formovie A in calculating user-specific updates.

FIG. 4 is a sequence diagram illustrating determining itemrecommendations for a particular user based on a real-time update to anitem recommendation model in response to an item recommendation requestfor the particular user, according to some embodiments. Real-timerecommendation engine 420 may provide item recommendations for aparticular user in real-time, by determining user-specific updates to anitem recommendation model. Data store 430 may store data such as theitem recommendation model (e.g., item recommendation model 130 and itemselection data 110 discussed above). Real-time recommendation engine 420(or other responsible component) may generate a new version of the itemrecommendation model 440 at data store 430 at a particular point intime.

Item selections may be made users subsequent to the generation or updateto the item recommendation model 440. For example, a particular user maymake user selections 442, 444, and 446 of items x, y and z after thegeneration of item recommendation model 440. Indications of these itemselections may be stored in item selection data in data store 430. Whenitem recommendation request 448 is received at real-time recommendationengine 420 for the particular user these subsequent item selections maybe accounted for. For example real-time recommendation engine 450 mayaccess user item selections 450 for the particular user, to obtain theuser item selections 452. Real-time recommendation engine 420 may thenidentify 454 those user selections that occurred after the generation ofthe item recommendation model 440 (e.g., by comparing timestamps of theuser selections). Thus, user selections of items x, y and z (442, 444and 446) may be identified.

Real-time recommendation engine 420 may then access data store 430 toobtain parameter vectors from the item recommendation model 456.Parameter vectors for the particular user (user i) and the particularitems (x, y and z) may be returned 458. The user-specific update maythen be calculated 460, such as by performing vector addition to combinethe user parameter vector q_(i) with the item parameter vectors v_(x),v_(y) and v_(z). Real-time recommendation engine 420 may then accessdata store 430 to obtain other item parameter vectors for determiningitem recommendations 462. Real-time recommendation engine 420 may thenmake item recommendation determinations 466. For instance, affinityscores may be determined for the particular user and various items byperforming a dot product calculation between the user-specific updateand a respective item parameter vector. Then, real-time recommendationengine 420 may respond with the item recommendations 468.

As discussed above, the user-specific update to the item recommendationmodel may be performed in real-time, without resorting to performinganother singular value decomposition to update the entire itemrecommendation model. The dotted line 470 illustrates visually atimespan for which a singular value decomposition to update the itemrecommendation model may be performed. Note the break in the time,indicating the additional time not illustrated that may be required toperform a complete update to the item recommendation model. Thus,user-specific updates useful for providing real-time itemrecommendations may be made in significantly less time than an update tothe entire item recommendation model.

The various embodiments of a network-based enterprise implementingreal-time updates to item recommendation models based on matrixfactorization described with regard to FIGS. 2-4 above, may implementone or more different techniques described below with regard to FIGS.5-8. However, various other kinds of item recommendation systems mayimplement real-time updates to item recommendation models based onmatrix factorization. FIG. 5 is a high-level flowchart illustratingmethods and techniques for implementing real-time updates to an itemrecommendation model based on matrix factorization, according to someembodiments. Different combinations of systems and/or devices mayimplement the various techniques discussed below.

As indicated at 510, access to an item recommendation model generatedfrom a singular value decomposition of a single matrix indicating userselection of items at a particular point in time may be obtained, invarious embodiments. The item recommendation model may include a usermatrix, of which particular rows in the user matrix represent particularusers. The item recommendation model may also include an item matrix, ofwhich particular rows in the item matrix may represent particular items.The item recommendation model may be maintained persistently, in variousembodiments.

In at least some embodiments, an item recommendation request for aparticular user may be received, as indicated at 520. For instance, anetwork-based interface or other component or module may desire toprovide item recommendations to a particular user and send a request toa system component, such as real-time item recommendation engine 100described above with regard to FIG. 1, to provide item recommendations.Please note, however, that in some embodiments user-specific updatessuch as described below with regard to element 540 may be updated forusers at other times (e.g., when an indication of item selection isreceived that is subsequent to the generation of the item recommendationmodel) and need not be performed in response to a recommendationrequest.

As indicated by the positive exit from 530, if item selections by theparticular user are subsequent to the generation of the itemrecommendation module, then a user-specific update for therecommendation model may be calculated as indicate at 540. In variousembodiments, a current user parameter vector for the particular user maybe obtained from the item recommendation model, and item parametervectors for the subsequently selected items may also be obtained may beused to calculate the user-specific update to the item recommendationmodel. In various embodiments, the user-specific update to the itemrecommendation module may not update other user parameter vectors oritem parameter vectors stored in the item recommendation model. In atleast some embodiments, the user-specific update to the itemrecommendation model may be calculated in real time, such that anothersingular value decomposition to update the item recommendation model isnot performed (or cannot be performed prior to calculating theuser-specific update). FIG. 6, discussed below, provides further detailfor calculating the user-specific update to the item recommendationmodel.

One or more item recommendations may then be determined based, at leastin part, on the item recommendation model, including the user-specificupdate, as indicated at 550. For example, the user-specific update maybe an updated user parameter vector which may be used to determinedifferent affinity scores between the particular user and other items.Item recommendations may then be made based on the determined affinityscores for the particular user. FIG. 9 provides further detail anddiscussion of determining item recommendations below. Itemrecommendations may also be determined for a particular user based onthe item recommendation model without including a user specific update,as indicated at 560. If, as indicated by the negative exit from 530, nosubsequent item selections by the particular user have occurred, then auser-specific update may not necessary to make item recommendations forthe particular user. Once item recommendations have been made, aresponse to the request for item recommendations may be made with thedetermined item recommendations, as indicated at 570. These itemrecommendations may be directly communicated to a particular user orreceived, formatted, and/or re-communicated via an intermediarycomponent, such as a network-based interface.

Updates to the entire item recommendation model may occur periodicallyor aperiodically, in some embodiments. For example, every 24 hours,singular value matrix decomposition may be performed on the matrixdescribing current user item selections to generate an updated usermatrix and item matrix. Thus, in various embodiments, user-specificupdates to the item recommendation model may be overwritten, removed, ormade obsolete upon the performance of another singular decomposition toupdate the item recommendation model. However, updates to the itemrecommendation model may be performed less frequently for systemsimplementing real-time updates to the item recommendation model, asdiscussed above with regard to FIGS. 2B and 2C, as user-specific updatesmay provide good approximations of complete updates to the itemrecommendation model.

FIG. 6 is a high-level flowchart illustrating methods and techniques forcalculating a user-specific update for an item recommendation model fora particular user, according to some embodiments. As indicated at 610,item selection data for a user may be accessed to obtain item selectionsfor the user, in some embodiments. Item selection data may be maintainedin a persistent data store or other storage area. The item selectionsobtained may be some or all of the item selections for the user (e.g.,all item selections within the last 6 months). Item selections of theuser that occur subsequent to the generation of an item recommendationmodel may be identified, as indicated at 620. For example, the itemrecommendation model used for generating item recommendations may begenerated at specific point in time. The item selections may themselvesbe associated with particular points in time (e.g., times at which anindication of the item selection is received). A timestamp or otherindication may, in various embodiments, indicate the particular point intime associated with a particular item selection. The times of each ofthe item selections may then be compared to the time the itemrecommendation model was generated and those item selections that occurlater (i.e., more recently or subsequent to) than the itemrecommendation model generation time may be identified as subsequentitem selections of the particular user.

As indicated at 630, the item recommendation model may then be accessedto obtain a user parameter vector for the user and item parametervectors for the identified subsequent items, in various embodiments. Theuser parameter vector may be the row of values in the user matrixcorresponding user number or identifier in the single matrix from whichthe item recommendation model is generated (as discussed above withregard to FIG. 2A). Similarly, item parameter vectors may be the rows ofvalues in the item matrix corresponding to the item number or identifierin the single matrix from which the item recommendation model isgenerated.

In some embodiments, item selections in the single matrix whichindicates selections of items between users and items may correspond toa particular rating value out of multiple rating values implementing arating scheme. For instance, a rating value may be 1, 2, 3, 4, or 5stars, or a 4.0 scale, or any other rating scheme or scale for whichdifferent rating values may be determined. As indicated by the positiveexit from 640, if the item selections correspond to a rating scale, thenthe item parameter vector may be scaled according to the correspondingitem ratings, as indicated at 650. For example, in some embodiments, therating may correspond to particular number or value which may multipliedwith respect to the item parameter vector. If the item selections do notcorrespond to item ratings, as indicated by the negative exit from 640,then the item parameter vectors may not be scaled, in at least someembodiments.

As indicated at 660, vector addition may be performed to combine theuser parameter vector and the item parameter vectors to generate auser-specific update to the item recommendation model for the user, insome embodiments. The user-specific update may be an updated userparameter vector which may be used or included in determining one ormore item recommendations, as discussed below with regard to FIG. 9. Inat least some embodiments, the user-specific update may be calculated inreal-time, without (or faster than) performing another singular valuedecomposition to update the item recommendation model, as discussedabove with regard to FIG. 4.

Users may, in various embodiments, be associated or linked to otherusers. For example, multiple users may be registered under a commoncustomer account, which may be useful to consolidate paymentinformation, user logistic information (e.g., shipping address, digitalor computing devices configured to receive items, etc.), or otherinformation involving the selection of items. Such commonalities may beuseful when determining item recommendations for a particular user byaccounting for the affinities of other users in the customer account.Other links or associations between users may also be implemented ordetermined. For example, users may establish relationships (e.g., twousers may play together/against one another in a gaming application ormultiple users may send various communications to one another via asocial media service). Users may belong to a particular voluntarygrouping such as a particular item forum, fan group, hobby or commoninterest organization, club, or other association that may indicatecommon interests. In some embodiments, a user profile, such as may be apart of a customer account for a network-based enterprise, may allow fordescriptive information about a particular user to be entered and/orstored, and may be used to identify other users that may be consideredlinked or associated with a particular user. Two user profiles may, forinstance, include the same key words (e.g., “science fiction”). FIG. 7is high-level flowchart illustrating methods and techniques forcalculating a user-specific update for a particular user linked to otherusers, according to some embodiments.

As indicated at 710, users may be identified as linked to a particularuser for a user specific-update to an item recommendation model for theparticular user, in various embodiments. In some embodiments, otherusers may be explicitly linked or associated with the user, and storedin mapping information or other metadata describing associations withthe particular user. In some embodiments, other users may beintelligently selected based on common features with a particular user(e.g., prior interaction with the user, membership in user groupings,geographic or demographic similarities). The number of users that may beassociated with a particular user may be limited, in some embodiments,so that selection or identification of linked users to the particularuser may be determined according to various different priority schemes.

As indicated at 720, user parameter vectors for the linked users anditem parameter vectors for items selected by the linked users occurringafter the generation of the item recommendation model may be obtained.If a weighting scheme is applied for linked users, as indicated by thepositive exit from 730, then vector addition may be performed forindividual ones and/or each linked user to combine the user parametervector for the linked user with item parameter vectors for which theuser subsequently selected after the generation of the itemrecommendation model. For instance, if linked user A selected items bband cc, and linked user B selected items dd and ee, then vector additionmay be performed to combine the user parameter vector of A with the itemparameter vectors for items bb and cc together. Likewise, the userparameter vector for linked user B may be combined with vector additionto item parameter vectors for items dd and ee.

As indicated at 760, individual ones of these updated parameter vectorsfor the linked users (e.g., the combined parameter vectors for user Aand user B above) may be scaled according to the weighting scheme (e.g.,multiplying the parameter vector by a particular scale value). Forexample, the weighting scheme may assign ranks, priorities, or othervalues to certain types of links to a particular user. For instance, ifa linked user is a member of the same customer account as the particularuser, then the weighted value of that linked user may be higher than aweighted value for a user that is only identified as linked to theparticular user based on similar key words. Weighting factors may alsobe determined based on the type of items being considered forrecommendation in some embodiments. When, for example, a linked user isidentified by a similarity for a particular genre of music and the itemrecommendation is for music, then the linked user may be weighted higherthan a linked user associated via common customer account (which mayinclude users of a wide array of musical tastes).

After scaling the updated parameter vectors, vector addition may beperformed to combine the scaled user parameter vectors of the linkedusers with a user parameter vector for the particular user and/or itemparameter vectors of items subsequently selected by the particular user,as indicated at 770. Continuing the example above, the updated parametervectors for user A and user B that are scaled above may be combined witha user vector U, as well as item parameter vectors ff and gg forsubsequent item selections by user U of items ff and gg. This combinedparameter vector may then be used as the user specific update.

Alternatively, as incited by the negative exit from 730, the userparameter vector for the particular user and the users linked to theuser may be combined together using vector addition along with itemparameter vectors for items subsequently selected items by theparticular user and/or linked users, as indicated at 740. Thus, thevectors may be combined without being scaled, in some embodiments.

FIG. 8 is a high-level flowchart illustrating methods and techniques forcomparing item recommendations among a particular user and other userslinked to the particular user, according to some embodiments. Asindicated at 810 users linked to a particular user may be identified. Asnoted above, various different associations, interactions, orcommonalities with others who may be linked to user accounts can beevaluated to identify linked users. In at least some embodiments, socialmedia associations (contacts or “friends” lists) may be used to identifylinked users. As indicated at 820, user parameter vectors and itemparameter vectors for the linked users may be obtained (for those linkedusers that have subsequently selected items since the itemrecommendation model was generated). Then, respective itemrecommendations may be generated for individual ones of the linked usersbased on user-specific updates calculated for the linked users from therespective user parameter vectors and item parameter vectors obtained,as indicated at 830. Please note that item recommendations may begenerated for linked users that have not subsequently selected itemsafter the generation of the item recommendation model. Itemrecommendations for these linked users may be generated using therespectively maintained user parameter vectors of these linked users.Once the different sets of item recommendations per user are generated,the item recommendations may be compared, as indicated at 840, in orderto select commonly recommended items to provide as recommendations forthe particular users. If, for instance, 3 out of 5 linked users had anitem recommended for them, then the particular item may be provided asan item recommendation (even if it was not generated based on theparticular user's model information alone). Various different schemesfor weighting or indicating commonality between recommendations, andthus the previous example is not intended to be limiting.

As noted above, item recommendations for a particular user may bedetermined based on an item recommendation model generated from asingular value decomposition of a single matrix that represents itemselections between users and items. A user-specific update for aparticular user may be generated in real-time to be used for making itemrecommendations. FIG. 9 is a high-level flowchart illustrating methodsand techniques for determining one or more item recommendations based onan item recommendation model generated from matrix factorization,according to some embodiments.

As indicated at 910, affinity scores may be calculated for a particularuser for items based on a user specific update to an item recommendationmodel, in some embodiments. For example, an updated user parametervector may be calculated as a user-specific update to the itemrecommendation model (as discussed above with regard to FIGS. 6 and 7).This user parameter vector may then be used to generate an affinityvis-à-vis a particular item. For instance, the dot product of userparameter vector U with a particular item parameter vector V_(j) mayprovide the affinity of user i for item j. Affinity scores may begenerated for a subset or all of the items described in an itemrecommendation model. For example, a particular subset or type of itemmay be an electronic product, a particular genre of movie, book ormusic, and/or a category of application or service. In some embodiments,the higher an affinity score, the higher a user's affinity for the itemmay be.

Based, at least in part, on the affinity scores, candidate itemrecommendations may be identified, as indicated at 920. For instance, insome embodiments, the item affinity scores may be ranked, ordered,grouped, or otherwise arranged according to affinity score. One or moreschemes may be applied to identify the candidate items, such as takingthe highest scoring item in different particular groupings, or, forinstance, identifying a certain number of items with items above aparticular affinity score threshold. Once identified, a selection ofitem recommendations may be made from the candidate item recommendationsaccording to selection criteria, as indicated at 930. Selection criteriamay, for instance, filter out from item recommendations those itemswhich the particular user has previously selected (or a user from linkedor associated with the particular user has selected). Selection criteriamay use other types of collaborative or knowledge-based filteringtechniques as selection criteria to perform selection of itemrecommendations (e.g., removing content considered inappropriate for aparticular user account known to be associated with customer of acertain age, such as determined by item description information like amovie or television show rating).

The methods described herein may in various embodiments be implementedby any combination of hardware and software. For example, in oneembodiment, the methods may be implemented by a computer system (e.g., acomputer system as in FIG. 10) that includes one or more processorsexecuting program instructions stored on a computer-readable storagemedium coupled to the processors. The program instructions may beconfigured to implement the functionality described herein (e.g., thefunctionality of recommendation engines, model generation components,data stores and/or other components that implement the network-basedenterprises, systems, or services described herein). The various methodsas illustrated in the figures and described herein represent exampleembodiments of methods. The order of any method may be changed, andvarious elements may be added, reordered, combined, omitted, modified,etc.

FIG. 10 is a block diagram illustrating a computer system configured toimplement real-time updates to item recommendation models based on itemfactorization described herein, according to various embodiments. Forexample, computer system 1000 may be configured to implement a real-timeitem recommendation engine, business logic, enterprise interface or astorage system that stores the item selection data and/or itemrecommendation model, in different embodiments. Computer system 1000 maybe any of various types of devices, including, but not limited to, apersonal computer system, desktop computer, laptop or notebook computer,mainframe computer system, handheld computer, workstation, networkcomputer, a consumer device, application server, storage device,telephone, mobile telephone, or in general any type of computing device.

Computer system 1000 includes one or more processors 1010 (any of whichmay include multiple cores, which may be single or multi-threaded)coupled to a system memory 1020 via an input/output (I/O) interface1030. Computer system 1000 further includes a network interface 1040coupled to I/O interface 1030. In various embodiments, computer system1000 may be a uniprocessor system including one processor 1010, or amultiprocessor system including several processors 1010 (e.g., two,four, eight, or another suitable number). Processors 1010 may be anysuitable processors capable of executing instructions. For example, invarious embodiments, processors 1010 may be general-purpose or embeddedprocessors implementing any of a variety of instruction setarchitectures (ISAs), such as the x86, PowerPC, SPARC, or MIPS ISAs, orany other suitable ISA. In multiprocessor systems, each of processors1010 may commonly, but not necessarily, implement the same ISA. Thecomputer system 1000 also includes one or more network communicationdevices (e.g., network interface 1040) for communicating with othersystems and/or components over a communications network (e.g. Internet,LAN, etc.). For example, a client application executing on system 1000may use network interface 1040 to communicate with a server applicationexecuting on a single server or on a cluster of servers that implementone or more of the components of the database systems described herein.In another example, an instance of a server application executing oncomputer system 1000 may use network interface 1040 to communicate withother instances of the server application (or another serverapplication) that may be implemented on other computer systems (e.g.,computer systems 1090).

In the illustrated embodiment, computer system 1000 also includes one ormore persistent storage devices 1060 and/or one or more I/O devices1080. In various embodiments, persistent storage devices 1060 maycorrespond to disk drives, tape drives, solid state memory, other massstorage devices, or any other persistent storage device. Computer system1000 (or a distributed application or operating system operatingthereon) may store instructions and/or data in persistent storagedevices 1060, as desired, and may retrieve the stored instruction and/ordata as needed. For example, in some embodiments, computer system 1000may host a storage system server node, and persistent storage 1060 mayinclude the SSDs attached to that server node.

Computer system 1000 includes one or more system memories 1020 that areconfigured to store instructions and data accessible by processor(s)1010. In various embodiments, system memories 1020 may be implementedusing any suitable memory technology, (e.g., one or more of cache,static random access memory (SRAM), DRAM, RDRAM, EDO RAM, DDR 10 RAM,synchronous dynamic RAM (SDRAM), Rambus RAM, EEPROM,non-volatile/Flash-type memory, or any other type of memory). Systemmemory 1020 may contain program instructions 1025 that are executable byprocessor(s) 1010 to implement the methods and techniques describedherein. In various embodiments, program instructions 1025 may be encodedin platform native binary, any interpreted language such as Java™byte-code, or in any other language such as C/C++, Java™, etc., or inany combination thereof. For example, in the illustrated embodiment,program instructions 1025 include program instructions executable toimplement the functionality of a real-time item recommendation engine(or module or component thereof), one or more computing systems, serversor nodes implementing a network-based enterprise, or storage systemsthat store the item selection data and/or the item recommendation model,in different embodiments. In some embodiments, program instructions 1025may implement multiple separate clients, server nodes, and/or othercomponents.

In some embodiments, program instructions 1025 may include instructionsexecutable to implement an operating system (not shown), which may beany of various operating systems, such as UNIX, LINUX, Solaris™, MacOS™,Windows™, etc. Any or all of program instructions 1025 may be providedas a computer program product, or software, that may include anon-transitory computer-readable storage medium having stored thereoninstructions, which may be used to program a computer system (or otherelectronic devices) to perform a process according to variousembodiments. A non-transitory computer-readable storage medium mayinclude any mechanism for storing information in a form (e.g., software,processing application) readable by a machine (e.g., a computer).Generally speaking, a non-transitory computer-accessible medium mayinclude computer-readable storage media or memory media such as magneticor optical media, e.g., disk or DVD/CD-ROM coupled to computer system1000 via I/O interface 1030. A non-transitory computer-readable storagemedium may also include any volatile or non-volatile media such as RAM(e.g. SDRAM, DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc., that may beincluded in some embodiments of computer system 1000 as system memory1020 or another type of memory. In other embodiments, programinstructions may be communicated using optical, acoustical or other formof propagated signal (e.g., carrier waves, infrared signals, digitalsignals, etc.) conveyed via a communication medium such as a networkand/or a wireless link, such as may be implemented via network interface1040.

In some embodiments, system memory 1020 may include data store 1045,which may be configured as described herein. For example, theinformation described herein as being stored by persistent storage, suchas the item selection data or the item recommendation model describedherein may be stored in data store 1045 or in another portion of systemmemory 1020 on one or more nodes, in persistent storage 1060, and/or onone or more remote storage devices 1070, at different times and invarious embodiments. In general, system memory 1020 (e.g., data store1045 within system memory 1020), persistent storage 1060, and/or remotestorage 1070 may store data blocks, replicas of data blocks, metadataassociated with data blocks and/or their state, data storageconfiguration information, and/or any other information usable inimplementing the methods and techniques described herein.

In one embodiment, I/O interface 1030 may be configured to coordinateI/O traffic between processor 1010, system memory 1020 and anyperipheral devices in the system, including through network interface1040 or other peripheral interfaces. In some embodiments, I/O interface1030 may perform any necessary protocol, timing or other datatransformations to convert data signals from one component (e.g., systemmemory 1020) into a format suitable for use by another component (e.g.,processor 1010). In some embodiments, I/O interface 1030 may includesupport for devices attached through various types of peripheral buses,such as a variant of the Peripheral Component Interconnect (PCI) busstandard or the Universal Serial Bus (USB) standard, for example. Insome embodiments, the function of I/O interface 1030 may be split intotwo or more separate components, such as a north bridge and a southbridge, for example. Also, in some embodiments, some or all of thefunctionality of I/O interface 1030, such as an interface to systemmemory 1020, may be incorporated directly into processor 1010.

Network interface 1040 may be configured to allow data to be exchangedbetween computer system 1000 and other devices attached to a network,such as other computer systems 1090 (which may implement one or morestorage system server nodes, enterprise system nodes, and/or clients ofthe network-based enterprise systems described herein), for example. Inaddition, network interface 1040 may be configured to allowcommunication between computer system 1000 and various I/O devices 1050and/or remote storage 1070. Input/output devices 1050 may, in someembodiments, include one or more display terminals, keyboards, keypads,touchpads, scanning devices, voice or optical recognition devices, orany other devices suitable for entering or retrieving data by one ormore computer systems 1000. Multiple input/output devices 1050 may bepresent in computer system 1000 or may be distributed on various nodesof a distributed system that includes computer system 1000. In someembodiments, similar input/output devices may be separate from computersystem 1000 and may interact with one or more nodes of a distributedsystem that includes computer system 1000 through a wired or wirelessconnection, such as over network interface 1040. Network interface 1040may commonly support one or more wireless networking protocols (e.g.,Wi-Fi/IEEE 802.11, or another wireless networking standard). However, invarious embodiments, network interface 1040 may support communicationvia any suitable wired or wireless general data networks, such as othertypes of Ethernet networks, for example. Additionally, network interface1040 may support communication via telecommunications/telephony networkssuch as analog voice networks or digital fiber communications networks,via storage area networks such as Fibre Channel SANs, or via any othersuitable type of network and/or protocol. In various embodiments,computer system 1000 may include more, fewer, or different componentsthan those illustrated in FIG. 10 (e.g., displays, video cards, audiocards, peripheral devices, other network interfaces such as an ATMinterface, an Ethernet interface, a Frame Relay interface, etc.)

It is noted that any of the system embodiments described herein, or anyof their components, may be implemented as one or more network-basedservices, which may or may not be distributed. For example, a real-timeitem recommendation may be implemented by a network-based enterprisethat employs the systems described herein to clients as network-basedservices. In some embodiments, a network-based service may beimplemented by a software and/or hardware system designed to supportinteroperable machine-to-machine interaction over a network. Anetwork-based service may have an interface described in amachine-processable format, such as the Web Services DescriptionLanguage (WSDL). Other systems may interact with the network-basedservice in a manner prescribed by the description of the network-basedservice's interface. For example, the network-based service may definevarious operations that other systems may invoke, and may define aparticular application programming interface (API) to which othersystems may be expected to conform when requesting the variousoperations. though

In various embodiments, a network-based service may be requested orinvoked through the use of a message that includes parameters and/ordata associated with the network-based services request. Such a messagemay be formatted according to a particular markup language such asExtensible Markup Language (XML), and/or may be encapsulated using aprotocol such as Simple Object Access Protocol (SOAP). To perform anetwork-based services request, a network-based services client mayassemble a message including the request and convey the message to anaddressable endpoint (e.g., a Uniform Resource Locator (URL))corresponding to the network-based service, using an Internet-basedapplication layer transfer protocol such as Hypertext Transfer Protocol(HTTP).

In some embodiments, network-based services may be implemented usingRepresentational State Transfer (“RESTful”) techniques rather thanmessage-based techniques. For example, a network-based serviceimplemented according to a RESTful technique may be invoked throughparameters included within an HTTP method such as PUT, GET, or DELETE,rather than encapsulated within a SOAP message.

Although the embodiments above have been described in considerabledetail, numerous variations and modifications may be made as wouldbecome apparent to those skilled in the art once the above disclosure isfully appreciated. It is intended that the following claims beinterpreted to embrace all such modifications and changes and,accordingly, the above description to be regarded in an illustrativerather than a restrictive sense.

1-21. (canceled)
 22. A system, comprising: at least one processor; and amemory, storing program instructions that when executed by the at leastone processor cause the at least one processor to: identify two or morelinked users of a plurality of users; obtain respective user parametervectors for the linked users and one or more respective item parametervectors for one or more items selected by linked users from an itemrecommendation model, wherein the item recommendation model comprises auser matrix and an item matrix that are generated from a matrixfactorization of a single matrix indicating respective item selectionsfor individual ones of a plurality of users with regard to a pluralityof items, wherein the one or more items were selected by the linkedusers after the generation of the item recommendation model; calculaterespective user-specific updates to the item recommendation model forthe linked users based, at least in part, on the respective userparameter vectors and the respective item parameter vectors; anddetermine at least one item recommendation for at least one of thelinked users based, at least in part, on the user-specific updates tothe item recommendation model.
 23. The system of claim 22, wherein toidentify the two or more linked users the program instructions cause theat least one processor to evaluate one or more contacts of one of thelinked users to identify other ones of the linked users.
 24. The systemof claim 22, wherein the linked users are associated with a same useraccount of a network-based enterprise.
 25. The system of claim 22,wherein to determine at least one item recommendation for at least oneof the linked users the program instructions cause the at least oneprocessor to: generate respective candidate item recommendations for thelinked users according to the user-specific updates to the itemrecommendation model for the linked users; and compare the respectivecandidate item recommendations for the linked users to select one ormore of the respective candidate item recommendations as the at leastone item recommendation for the at least one linked user.
 26. The systemof claim 22, wherein to calculate the respective user-specific updatesto the item recommendation model for the linked users, the programinstructions cause the at least one processor to: for individual ones ofthe user-specific updates, perform vector addition to combine the userparameter vector of one of the linked users and the respective itemparameter vectors of the items selected by the linked user after thegeneration of the item recommendation model to calculate theuser-specific update for the linked user.
 27. The system of claim 22,wherein to calculate the respective user-specific updates to the itemrecommendation model for the linked users, the program instructionscause the at least one processor to: for individual ones of theuser-specific updates, perform vector addition to combine the userparameter vector of two or more of the linked users and the respectiveitem parameter vectors of the items selected by the two or more linkedusers after the generation of the item recommendation model to calculatethe user-specific update for one of the linked users.
 28. The system ofclaim 22, wherein the program instructions further cause the at leastone processor to: receive an item recommendation request for aparticular user; in response to the receipt of the request: perform theidentification, the obtain, the calculation, and the determination,wherein the particular user is the at least one linked user; and respondto the request with the at least one item recommendation.
 29. A method,comprising: performing, by one or more computing devices: identifyingtwo or more linked users of a plurality of users; obtaining respectiveuser parameter vectors for the linked users and one or more respectiveitem parameter vectors for one or more items selected by linked usersfrom an item recommendation model, wherein the item recommendation modelcomprises a user matrix and an item matrix that are generated from amatrix factorization of a single matrix indicating respective itemselections for individual ones of a plurality of users with regard to aplurality of items, wherein the one or more items were selected by thelinked users after the generation of the item recommendation model;calculating respective user-specific updates to the item recommendationmodel for the linked users based, at least in part, on the respectiveuser parameter vectors and the respective item parameter vectors; anddetermining at least one item recommendation for at least one of thelinked users based, at least in part, on the user-specific updates tothe item recommendation model.
 30. The method of claim 29, whereinidentifying the two or more linked users comprises evaluating one ormore contacts of one of the linked users to identify other ones of thelinked users.
 31. The method of claim 29, wherein the linked users areassociated with a same user account of a network-based enterprise. 32.The method of claim 29, wherein determining at least one itemrecommendation for at least one of the linked users, comprises:generating respective candidate item recommendations for the linkedusers according to the user-specific updates to the item recommendationmodel for the linked users; and comparing the respective candidate itemrecommendations for the linked users to select one or more of therespective candidate item recommendations.
 33. The method of claim 29,wherein calculating the respective user-specific updates to the itemrecommendation model for the linked users comprises: for individual onesof the user-specific updates, performing vector addition to combine theuser parameter vector of one of the linked users and the respective itemparameter vectors of the items selected by the linked user after thegeneration of the item recommendation model to calculate theuser-specific update for the linked user.
 34. The method of claim 29,wherein calculating the respective user-specific updates to the itemrecommendation model for the linked users comprises: for individual onesof the user-specific updates, performing vector addition to combine theuser parameter vector of two or more of the linked users and therespective item parameter vectors of the items selected by the two ormore linked users after the generation of the item recommendation modelto calculate the user-specific update for one of the linked users. 35.The method of claim 29, further comprising: receiving an itemrecommendation request for a particular user; in response to receivingthe request: performing the identifying, the obtaining, the calculating,and the determining, wherein the particular user is the at least onelinked user; and responding to the request with the at least one itemrecommendation.
 36. A non-transitory computer-readable storage medium,storing program instructions that when executed by one or more computingdevices cause the one or more computing devices to implement:identifying two or more linked users of a plurality of users; obtainingrespective user parameter vectors for the linked users and one or morerespective item parameter vectors for one or more items selected bylinked users from an item recommendation model, wherein the itemrecommendation model comprises a user matrix and an item matrix that aregenerated from a matrix factorization of a single matrix indicatingrespective item selections for individual ones of a plurality of userswith regard to a plurality of items, wherein the one or more items wereselected by the linked users after the generation of the itemrecommendation model; calculating respective user-specific updates tothe item recommendation model for the linked users based, at least inpart, on the respective user parameter vectors and the respective itemparameter vectors; and determining at least one item recommendation forat least one of the linked users based, at least in part, on theuser-specific updates to the item recommendation model.
 37. Thenon-transitory, computer-readable storage medium of claim 36, wherein,in identifying the two or more linked users, the program instructionscause the one or more computing devices to implement evaluating one ormore contacts of one of the linked users to identify other ones of thelinked users.
 38. The non-transitory, computer-readable storage mediumof claim 36, wherein, in determining at least one item recommendationfor at least one of the linked users, the program instructions cause theone or more computing devices to implement: generating respectivecandidate item recommendations for the linked users according to theuser-specific updates to the item recommendation model for the linkedusers; and comparing the respective candidate item recommendations forthe linked users to select one or more of the respective candidate itemrecommendations.
 39. The non-transitory, computer-readable storagemedium of claim 36, wherein, in calculating the respective user-specificupdates to the item recommendation model for the linked users, theprogram instructions cause the one or more computing devices toimplement: for individual ones of the user-specific updates, performingvector addition to combine the user parameter vector of one of thelinked users and the respective item parameter vectors of the itemsselected by the linked user after the generation of the itemrecommendation model to calculate the user-specific update for thelinked user.
 40. The non-transitory, computer-readable storage medium ofclaim 36, wherein, in calculating the respective user-specific updatesto the item recommendation model for the linked users, the programinstructions cause the one or more computing devices to implement: forindividual ones of the user-specific updates, performing vector additionto combine the user parameter vector of two or more of the linked usersand the respective item parameter vectors of the items selected by thetwo or more linked users after the generation of the item recommendationmodel to calculate the user-specific update for one of the linked users.41. The non-transitory, computer-readable storage medium of claim 36,wherein the program instructions cause the one or more computing devicesto further implement: receiving an item recommendation request for aparticular user; in response to receiving the request: performing theidentifying, the obtaining, the calculating, and the determining,wherein the particular user is the at least one linked user; andresponding to the request with the at least one item recommendation.